package com.chenjt.jvm.first.nine_String;

import java.util.HashSet;
import java.util.Set;

/**
 * 注释：
 * jdk6
 * -XX:PermSize=6m -XX:MaxPermSize=6m -Xmx6m -Xms6m
 *
 * jdk8
 * -XX:MetaspaceSize=6m -XX:MaxMetaspaceSize=6m -Xmx6m -Xms6m
 *
 * 查看OOM的报错信息，可以证明在jdk8中，字符串是放在堆空间中的
 *
 * @author chenjt
 * @date 2025/6/13 9:02
 */
public class StringTest3 {

    public static void main(String[] args) {
        // 使用Set保持着常量池引用，避免full gc回收常量池行为
        Set<String> set = new HashSet<String>();
        // 在shrot可以取值的范围内足以让6MB的PermSize或heap产生OOM
        short i = 0;
        while (true){
            set.add(String.valueOf(i++).intern());
        }
    }

}
